iT邦幫忙

0

[解題紀錄] Love Song

  • 分享至 

  • xImage
  •  

題目

題目大意:

以題目的範例測試資料為例:

7 3
abacaba
1 3
2 5
1 7
  1. 第一行的7代表這首歌有7個字元,3代表接下來有3個問題要回答
  2. 第二行的abacaba則是這首歌的內容
  3. 第三行以後的每一行都代表一個問題,而要回答的答案為這個字串的編號加總

解題思路:

例如範例中的歌曲abacaba, 可以先轉成編號的array
a = [1, 2, 1, 3, 1, 2, 1] 接著回答每個問題時,需要頻繁的計算subarray的值,
因此這裡可以定義一個新的array表示方式,b[i] = sum[a[0] - a[i]],這樣會比較好計算

程式碼:

// https://codeforces.com/problemset/problem/1539/B
#include <iostream>
#include <string>
using namespace std;

#define MAX_SIZE (int)(1e6+10)

int main(){
    int n, q, strNum[MAX_SIZE];
    string str;
    cin >> n >> q;
    cin >> str;
    strNum[0] = 0;
    int strSize = str.size();
    for (int i = 1; i <= strSize; i++) {
        strNum[i] = strNum[i-1] + str[i-1] - 'a' + 1;
    }

    int l, r;
    for (int i = 0; i < q; i++) {
        cin >> l >> r;
        cout << strNum[r] - strNum[l-1] << endl;
    }

    return 0;
}

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言